home *** CD-ROM | disk | FTP | other *** search
/ The Macintosh Demo Applications CD / Apple-MacintoshDemoApplicationsCD-1.0-1992.iso / More Information / QuicKeys / For Programmers Only.sea / Pascal Examples / SampleUI.p < prev    next >
Text File  |  1991-06-22  |  3KB  |  106 lines

  1. (*    $Workfile$ *)
  2. (*    $Revision$ *)
  3.  
  4. {    QuicKeys 2™ sample extension user interface routine }
  5.  
  6. {    © 1990 CE Software, Inc.  All rights reserved.}
  7.  
  8. {    For QuicKeys 2 Extension Sample source code you have a royalty-free right }
  9. {    to include object code derived from this Sample source code in programs }
  10. {    that you develop.  You also have the right to use, distribute, and license }
  11. {    such programs to third parties without payment of any further license fees }
  12. {    to CE Software, Inc., so long as a copyright notice sufficient to protect }
  13. {    your copyright for your software in the United States or any other country; }
  14. {    is included in the graphic display of your software and on the labels }
  15. {    affixed to the media on which your software is distributed. }
  16.  
  17. {    WHEN    WHO        WHAT}
  18. {•••••}
  19. {    9/5        mkg        created version for either MPW or Think Pascal}
  20. {    6/17    mkg        support balloon help}
  21. {•••••}
  22.  
  23. unit SampleExtensionUI;
  24.  
  25. interface
  26.  
  27.     uses
  28. {$ifc UNDEFINED THINK_PASCAL}
  29.         Memtypes, Quickdraw, OSIntf, ToolIntf, packages, 
  30. {$endc}
  31.         extensions, SampleData;
  32.     {$D-}
  33.      {$R-}
  34.  
  35.     function main (wSelector: integer;
  36.                                     pDialog: DialogPtr;
  37.                                     wHitItem: integer;
  38.                                     wFirstItem: integer;
  39.                                     var myData: SampleDataRec;
  40.                                     lRefCon: longint): longint;
  41.  
  42. implementation
  43.     const
  44.         ditlWaitTime = 1; { dialog item of edittext item }
  45.  
  46.     function main (wSelector: integer;
  47.                                     pDialog: DialogPtr;
  48.                                     wHitItem: integer;
  49.                                     wFirstItem: integer;
  50.                                     var myData: SampleDataRec;
  51.                                     lRefCon: longint): longint;
  52.         var
  53.             strWaitTime: str255;
  54.             wType: integer;
  55.             hItem: Handle;
  56.             rDitl: Rect;
  57.             hHelp: Handle;
  58.  
  59.     begin
  60.         case wSelector of
  61.             newUI: 
  62.                 begin
  63.             { the user has just created a new key.  initialize it }
  64.                     myData.lWaitTime := 0;
  65.                     myData.hdr.wLength := sizeof(SampleDataRec);
  66.                 end;
  67.  
  68.             initUI: 
  69.                 begin
  70.             { QuicKeys 2™ is about to display our dialog.  preset our dialog items }
  71.  
  72.                     NumToString(MyData.lWaitTime, strWaitTime);
  73.                     GetDItem(pDialog, ditlWaitTime + wFirstItem, wType, hItem, rDitl);
  74.                     SetIText(hItem, strWaitTime);
  75.             
  76.             { fudge the hdlg resource to set the number of dialog items to skip }
  77.                     hHelp := GetResource('hdlg', -14348);
  78.                     if hHelp <> nil then
  79.                         BlockMove(@wFirstItem, pointer(ord4(hHelp^) + 2), 2);
  80.                 end;
  81.  
  82.             hitUI: 
  83.                 begin
  84.             { the user clicked or typed into one of our items }
  85.             {  In this example, there is nothing to do }
  86.                 end;
  87.  
  88.             doneUI:
  89.             { The user has clicked ok or cancel. }
  90.             { Collect items from dialog and place in key data.}
  91.  
  92.             { Important note:  Since QuicKeys gives us a copy of the key data to }
  93.             { work on, we don't care whether user hit ok or cancel.  QuicKeys will }
  94.             { discard the copy if the user hit cancel or update the actual key data }
  95.             { if the user hit ok. }
  96.                 begin
  97.                     GetDItem(pDialog, ditlWaitTime + wFirstItem, wType, hItem, rDitl);
  98.                     GetIText(hItem, strWaitTime);
  99.                     StringToNum(strWaitTime, myData.lWaitTime)
  100.                 end;
  101.         end;
  102.  
  103.         main := 0;
  104.     end;
  105.  
  106. end.